热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

形态|合理性_鸿蒙开发|HarmonyOS是什么

篇首语:本文由编程笔记#小编为大家整理,主要介绍了鸿蒙开发|HarmonyOS是什么相关的知识,希望对你有一定的参考价值。一、什么是harmonyOs.

篇首语:本文由编程笔记#小编为大家整理,主要介绍了鸿蒙开发|HarmonyOS是什么相关的知识,希望对你有一定的参考价值。



一、什么是harmonyOs.


(1)解决用户面对大量智能终端体验割裂的问题。


(2)对开发者而言,harmonyos通过各种分布式技术整合不同超级终端的能力形成一个 虚拟的超级终端。应用开发者可基于harmonyos超级终端开发应用,聚焦上层业务逻辑,无需关注硬件差异。


(3)设备开发者可以按需调用其他终端能力。带来基于超级终端的创新服务体验。


二、harmonyos系统架构

1、harmonyos采用分层架构,共四层,从下向上依次为内核层、系统服务层、框架层、应用层。

系统功能按照“系统>子系统>功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块。内核子系统:HarmonyOS采用多内核设计,支持针对不同资源受限设备选用适合的OS内核。
 


1、一次开发、多段部署

一次开发、多端部署示意图:


分布式任务调度示意图



基于


分布式软总线、数据管理


分布式Profile


分布式安全认证


构成


 支持跨设备应用、远程访问启动、远程调用、链接、迁移等操作,能够根据不同设备的能力、位置、业务运行状态、资源使用情况、用户的习惯和意图选择合适的设备运行分布式任务。


三、编写一个HarmonyOS应用

3..1 HarmonyOS .app 组成

HarmonyOS应用软件包使用app pack(.app)的形式发布,它是由一个或者多个hap包以及描述每个hap属性的pakc.info组成,hap是abilities的部署包,HarmonyOS应用围绕abilities组件展开,一个hap是由代码(abilities)、资源(resources)、第三方库(libs)以及应用配置文件(config.json)组成。可分为Entry.hap和Feature.hap。
 

***Entry***是应用的主模块,一个APP中,对于同一个设备类型必须有且只有一个Entry类型的hap可独立安装运行。

***Feature***是应用的动态特性模块,一个APP可以包含一个或多个Feature类型的hap,也可以不包含。

只有包含abilities的hap才能独立运行。


3.2应用UI布局的编写

 


3.2.1 布局类组件



提供不同规范的组件容器


 


  • DirectionalLayout
    以单一方向排列
  • DependentLayout
    以相对位置排列
  • PositionLayout
    以确切位置排列
  • StackLayout
  • AdaptiveBoxLayout

3.2.2 显示类组件



提供单纯的内容显示


 


  • Text
    用于文本显示
  • Image
    用于图像显示
  • Clock
  • ProgressBar

3.2.3 交互类组件



提供具体场景下和用户交互响应的功能


 

Button
提供点击响应的功能
Slider
提供进度选择的功能
RadioButton
TextFiled
CheckBox



3.3 在XML中声明UI布局

在鸿蒙系统的JavaUI框架中,提供了两种编写布局的方式。

在代码中创建UI布局
通过在XML中声明UI布局
两者创建出的布局没有本质的差别。

ability_main.xml文件按照层次结构描述了界面上各种结构之间的关系。图库部分被声明为一个AdaptliveBoxLayout类型的组件,且包含两个图库对象,这两个对象分别为独立的DirectionalLayout组件,通过对组件设定布局参数和属性值来确定最终的UI布局效果。

在xml中完成布局声明后,需要将其添加到代码中,添加为页面的根布局或者其他布局的子布局。


3.4 实现应用功能

鸿蒙系统中所有的应用均在应用沙盒内运行,对资源的访问权限均需要对系统进行申请,有系统进行管理。默认情况下应用只能访问有限的资源。

应用权限会受到abilities、应用、系统以及用户等多方面进行共同管理,保证了受限权限接口是在约定好的规则下正常使用。避免权限接口被滥用而导致用户、应用或设备受损。

权限申请

示例中将使用多设备协同访问权限(DISTRIBUTED_DATASYNC)
 

在config.json中使用reqPermissions属性对该权限进行声明。(若未进行权限声明,应用将无法申请和获取权限)

在MainAvility.java中基于用户可治可控的原则,在程序运行时主动调用系统动态申请权限的接口,通过系统的弹窗获得用户的授权,敏感权限的使用需要得到用户允许。用户结合应用运行场景的上下文识别出应用申请相应权限的合理性,从而做出正确的选择。即便用户向应用授权了请求的权限,应用在调用权限管控接口前也应该检查自己是否已经获得了权限,而不能把之前获得的权限持久化,因为用户授权后还可以通过设置取消授权。

实现应用迁移

分布式任务调度平台对打在鸿蒙系统的终端提供了统一的组件管理能力,这是远程启动、远程调用、业务无缝迁移等分布式任务。

开发者可以通过Ability中实现IAbilityContinuation接口,调用Ability的迁移方法continueAbility即可将本地业务无缝迁移到指定的设备中。

IAbilityContinuation接口为应用提供了如下几种回调方法:

IAbilityContinuation.onStartContinuation()
可以用于完成迁移前的准备工作。
IAbilityContinuation.onSaveData()
可以用于完成迁移前保存迁移所需的数据
IAbilityContinuation.onRestoreData()
可以用于恢复迁移后所需要的数据
IAbilityContinuation.onCompleteContinuation()
可以用于完成迁移后的工作。
Ability.onStart()
正常的程序启动
响应用户事件

用户事件主要包括手势事件、按键事件

手势事件——可穿戴设备、手机等可触屏设备
按键事件——智慧屏等由遥控器按键操作的设备
为迁移按钮绑定一个用户点击屏幕事件(Conponent.ClickedListener),和一个用于智慧屏按键监听的事件(Conponent.KeyEventListener)。



四.应用的编译、安装、运行

1、resources目录:

按照两级目录性质组成,目录命名必须符合规范,以便根据设备形态匹配相应目录下的资源文件

一级目录
base目录,是默认存在的目录,当相应的resources资源目录中没有于当前设备形态相匹配的限定词目录时,会自动引用该目录中的资源文件。
二级目录
资源目录,存放字符串、颜色、布尔值等基础语言元素,以及媒体、动画、布局等资源文件。


2、在media目录下存放图片 


 3、在ability_main.XML文件中声明Ui布局


4、 在mainAbility文件中完成用户事件的绑定迁移等工作。


5、最后编译生成的APP文件在release目录下。 

 


推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 单点登录原理及实现方案详解
    本文详细介绍了单点登录的原理及实现方案,其中包括共享Session的方式,以及基于Redis的Session共享方案。同时,还分享了作者在应用环境中所遇到的问题和经验,希望对读者有所帮助。 ... [详细]
  • 本文介绍了一款名为TimeSelector的Android日期时间选择器,采用了Material Design风格,可以在Android Studio中通过gradle添加依赖来使用,也可以在Eclipse中下载源码使用。文章详细介绍了TimeSelector的构造方法和参数说明,以及如何使用回调函数来处理选取时间后的操作。同时还提供了示例代码和可选的起始时间和结束时间设置。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
author-avatar
手机用户2502902093
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有